package com.skyd.core.game.td;


import java.util.concurrent.CopyOnWriteArrayList;


import com.skyd.core.common.Point;

public class TDMapExitPiece extends TDMapPiece implements ITDMapExitPiece {
	
	public TDMapExitPiece(Point p) {
		super(p);
	}

//	/**
//	 * 容差
//	 */
//	private float tolerance=3;
	
	@Override
	public void update() {
		super.update();
		for (ITDBiont f : TDWorld.getInstance().getBiont()) {
			if(f.getPosition().minus(getCenterPosion()).getLength()<f.getSpeed()/2)OnBiontArriveExit(f);
		}
	}

//	/**
//	 * 初始值为null。 功能注释：出口点
//	 */
//	private Vector2DF _LeavePoint = null;
//
//	/**
//	 * 获取LeavePoint。 功能注释：出口点
//	 * 
//	 * @return 当前的Vector2DF类型的值
//	 */
//	public Vector2DF getLeavePoint() {
//		return _LeavePoint.getClone();
//	}
//
//	/**
//	 * 设置LeavePoint。 功能注释：出口点
//	 * 
//	 * @param value
//	 *            要设置的Vector2DF类型值
//	 */
//	public void setLeavePoint(Vector2DF value) {
//		_LeavePoint = value;
//	}
//
//	/**
//	 * 设置LeavePoint为其默认值(null)。 功能注释：出口点
//	 */
//	public void setLeavePointToDefault() {
//		setLeavePoint(null);
//	}

	/**
	* 生物抵达出口事件监听器列表
	*/
	private  CopyOnWriteArrayList<ITDBiontArriveExitListener>  _BiontArriveExitListenerList = null;

	@Override
	public void addOnBiontArriveExitListener(ITDBiontArriveExitListener listener) {
		if(_BiontArriveExitListenerList==null)_BiontArriveExitListenerList=new CopyOnWriteArrayList<ITDBiontArriveExitListener>();
		if(!_BiontArriveExitListenerList.contains(listener))_BiontArriveExitListenerList.add(listener);
	}
	
	/**
	 * 移除生物抵达出口监听器
	 * @param listener 监听器
	 */
	public void removeOnBiontArriveExitListener(ITDBiontArriveExitListener listener) {
		if(_BiontArriveExitListenerList==null)return;
		if(_BiontArriveExitListenerList.contains(listener))_BiontArriveExitListenerList.remove(listener);
	}
	
	/**
	* 发生生物抵达出口事件时
   * @param biont 涉及生物
	*/
	protected void OnBiontArriveExit(ITDBiont biont){
		if(_BiontArriveExitListenerList==null)return;
		for (ITDBiontArriveExitListener f : _BiontArriveExitListenerList) {
			f.onBiontArriveExit(this, biont);
		}
	}

}
